package com.yangit.temp.util.excel.easy.util;

import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.yangit.temp.util.excel.easy.entity.StationData;

import org.apache.commons.compress.utils.Lists;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.util.ArrayList;
import java.util.List;


/**
 * 1、注意监听器不能由spring容器管理，每次调用时都需要手动new 2、监听器内部需要使用ioc中的bean时，可以通过构造方法传入
 * 
 * @author Administrator
 *
 */
public class StationDataReadListener extends AnalysisEventListener<Object> {


	private static final Logger LOGGER = LoggerFactory.getLogger(StationDataReadListener.class);

	private static final int BATCH_COUNT = 2000;
	private List<StationData> data = Lists.newArrayList();


	private StationBatchUtil util;

	/**
	 * -解析每条数据时都会调用
	 */
	public void invoke(Object dat, AnalysisContext context) {

		data.add((StationData) dat);
		if (data.size() >= BATCH_COUNT) {
			util = SpringUtil.getBean(StationBatchUtil.class);
			List<StationData> list = new ArrayList<>();
			System.out.println("data"+data.size());
			list.addAll(data);
			System.out.println("lise:"+list.size());
			util.saveData(list);
			data.clear();
      	}

	}


	/**
	 * -所有数据解析完之后调用
	 */
	public void doAfterAllAnalysed(AnalysisContext context) {
		// TODO Auto-generated method stub
		// 可以在此处执行业务操作
		// 本例就打印到控制台即可，表示读取完成
		util.saveData(data);
		LOGGER.info("size:{}",data.size());
	}

}
